package com.feng.designpattern.strategy.sortarray;

/**
 * 
 * 冒泡法:
 * 比较容易，它的内层循环保证遍历一次后，集合中最小（大）元素出现在它的正确位置，下一次就是次小元素。。。该方法在集合分布的各种情况下交换移动的次数基本不变，属于最慢的一种排序。实现也是双重循环控制。这种排序法属于过江龙,就是要找到极端,但是过奖龙也有大哥,二哥等,所以他们只能是大哥挑了二哥挑.
 * 处理代码如下:
	public static int[] maopao(int[] data) {
	   int temp;
	   for (int i = 0; i < data.length - 1; i++) {
	    for (int j = i + 1; j < data.length; j++) {
	     if (data[i] < data[j]) {
	      temp = data[i];
	      data[i] = data[j];
	      data[j] = temp;
	     }
	    }
	   }
	   return data;
	}
 * 
 */
public class BubbleSort extends SortStrategy {
	public void sort(int[] data) {
		int temp;
		// 冒泡排序法(Bubble Sort)
		long begin = System.currentTimeMillis();
		for (int k = 0; k < 1000000; k++) {
			for (int i = 0; i < data.length; i++) {
				for (int j = i; j < data.length - 1; j++) {
					if (data[j + 1] > data[j]) {
						temp = data[j + 1];
						data[j + 1] = data[j];
						data[j] = temp;
					}
				}
			}
		}
		long end = System.currentTimeMillis();
		System.out.println("冒泡法用时为：" + (end - begin));
		// 打印排序好的结果
		for (int i = 0; i < data.length; i++) {
			System.out.println(data[i]);
		}
	}
}
